/*
 * @lc app=leetcode.cn id=9 lang=cpp
 *
 * [9] 回文数
 *
 * https://leetcode.cn/problems/palindrome-number/description/
 *
 * algorithms
 * Easy (56.97%)
 * Likes:    2160
 * Dislikes: 0
 * Total Accepted:    1.1M
 * Total Submissions: 2M
 * Testcase Example:  '121'
 *
 * 给你一个整数 x ，如果 x 是一个回文整数，返回 true ；否则，返回 false 。
 * 
 * 回文数是指正序（从左向右）和倒序（从右向左）读都是一样的整数。
 * 
 * 
 * 例如，121 是回文，而 123 不是。
 * 
 * 
 * 
 * 
 * 示例 1：
 * 
 * 
 * 输入：x = 121
 * 输出：true
 * 
 * 
 * 示例 2：
 * 
 * 
 * 输入：x = -121
 * 输出：false
 * 解释：从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
 * 
 * 
 * 示例 3：
 * 
 * 
 * 输入：x = 10
 * 输出：false
 * 解释：从右向左读, 为 01 。因此它不是一个回文数。
 * 
 * 
 * 
 * 
 * 提示：
 * 
 * 
 * -2^31 <= x <= 2^31 - 1
 * 
 * 
 * 
 * 
 * 进阶：你能不将整数转为字符串来解决这个问题吗？
 * 
 */

// @lc code=start
class Solution {
public:
    bool isPalindrome(int x) {
        // if(x < 0) return false;
        // if(x < 10) return true;
        // vector<int> num;
        // while(x) {
        //     int yushu = x % 10;
        //     num.push_back(yushu);
        //     x /= 10;
        // }
        // int left = 0;
        // int right = num.size() - 1;
        // while(left < right) {
        //     if(num[left] != num[right]) return false;
        //     left++;
        //     right--;
        // }
        // return true;

        //转换成字符串
        // stringstream ss;
        // string s;
        // ss<< x;
        // ss>> s;
        // int end = s.length() - 1;
        // for(int i = 0; i < s.length() / 2; i++){
        //     if(s[i] != s[end]){
        //         return false;
        //     }
        //     end = end - 1;
        // }
        // return true;
        
          
        if(x < 0) return false;
        if(x < 10) return true;
        long revert = 0;
        int y = x;
        while(y) {
            revert = revert * 10 + y % 10;
            y /= 10;            
        }
        return x == revert;

    }
};
// @lc code=end

